// 权限工具函数

// 定义角色常量
export const ROLES = {
  ADMIN: 201,
  VIEWER: 401,
  GUEST: 402
};

// 定义菜单权限配置
export const MENU_PERMISSIONS = {
  '/employee-list': [ROLES.MANAGER, ROLES.VIEWER],
  '/order-management': [ROLES.ADMIN, ROLES.MANAGER, ROLES.OPERATOR, ROLES.VIEWER, ROLES.GUEST],
  '/customer-management': [ROLES.ADMIN, ROLES.VIEWER, ROLES.GUEST],
  '/contract-management': [ROLES.ADMIN, ROLES.VIEWER, ROLES.GUEST],
  '/factory-management': [ROLES.ADMIN],
  '/device-management': [ROLES.ADMIN]
};

// 菜单顺序（按优先级排序）
export const MENU_ORDER = [
  '/employee-list',
  '/order-management', 
  '/customer-management',
  '/contract-management',
  '/factory-management',
  '/device-management'
];

/**
 * 检查用户是否有权限访问指定路径
 * @param {string} path 路径
 * @param {number} userRole 用户角色
 * @returns {boolean}
 */
export function hasPermission(path, userRole) {
  const allowedRoles = MENU_PERMISSIONS[path];
  if (!allowedRoles) return false;
  
  const role = parseInt(userRole);
  if (!role || isNaN(role)) return false;
  
  return allowedRoles.includes(role);
}

/**
 * 获取用户第一个可访问的菜单路径
 * @param {number} userRole 用户角色
 * @returns {string} 第一个可访问的路径，如果没有则返回订单管理
 */
export function getFirstAccessibleMenu(userRole) {
  const role = parseInt(userRole);
  if (!role || isNaN(role)) {
    // 如果角色无效，默认返回订单管理（权限最宽松）
    return '/no-permission';
  }
  
  // 按菜单顺序查找第一个有权限的菜单
  for (const path of MENU_ORDER) {
    if (hasPermission(path, role)) {
      return path;
    }
  }
  
  // 如果没有找到任何可访问的菜单，返回订单管理作为默认值
  return '/no-permission';
} 